﻿// ﻿/*
//  *  Utils.js 0.1
//  *  Author: zsk
//  *  Date: 2016-01-05
//  */
// ;(function(root, factory) {
//     if(typeof define === 'function' && define.amd) {
//         define(function() {
//             return (root.Utils = factory());
//         });
//     } else if(typeof exports === 'object') {
//         module.exports = factory();
//     } else {
//         root.Utils = factory();
//     }
// } (this, function() {
//
//     var root = this || global;
//     var _previousUtils = root.Utils;
//
//     var Utils = {};
//     Utils.VERSION = '0.1';
//     // ------------------------------------
//
//
//     /*
//      *   服务器交互返回 回调方法
//      *   messager;
//      *   Author zsk 2014-07-03
//      */
//     Utils.messager = function(data, callback, skip) {
//         if (data.status === 1) {
//             if (skip) { // 跳过提示，直接回调
//                 callback && callback.call(data, data.data);
//             } else {
//                 alert(data.message);
//             }
//             return true;
//         } else if (data.status === 0) {
//             if (302 === data.code) { // 会话超时
//                 window.location.reload();
//             } else if (301 === data.code){
//                 window.location.reload();
//             } else {
//                 alert(data.message);
//             }
//         } else if (data.status == undefined) {
//             alert("返回数据格式不正确！\n" + JSON.stringify(data));
//         }
//         return false;
//     };
//
//
//     /**
//      *  doAjax  统一AJAX方法
//      *  参数 opts:
//      *  type    : "GET",
//      *  url     : str 地址
//      *  data    : post or get Data
//      *  dataType: "JSON"
//      *  callback: function(data){} 回调函数
//      *            enableBtn：使用callback时可传此参数,用于请求返回结果时启用easyui-linkbutton按钮
//      *  messager: boolean || function  提示框(true)
//      *  skip    : boolean 成功时是否跳过提示框(true)
//      *  progress: boolean || function  是否显示进度条(false)
//      *
//      *  Author zsk 2014-07-03
//      */
//     Utils.doAjax = function(opts) {
//
//         var _self = this;
//
//         // 扩展callback方法：用于当前已使用callback作为回调函数的地方过滤500报错以及会话超时处理
//         // 2016-8-26  zxy
//         if(opts.callback){
//             opts.filterCallback = function(data){
//                 if (data.status === 1) {
//                     opts.callback(data);
//                 }else if (data.status === 0) {
//                     if (302 === data.code || 301 === data.code) { // 会话超时
//                         window.location.reload();
//                     }
//                 }
//             }
//         }
//
//         var defalutOpts = {
//             type: "GET",
//             cache: false,
//             data: {},
//             dataType: "JSON",
//
//             //callback: function() {},
//
//             filterCallback: function() {},
//
//             messager: true, // 提示操作提示
//             skip: true,
//
//             progress: false
//         }
//
//         var options = $.extend({}, defalutOpts, opts);
//
//         // 显示进度条
//         if (typeof options.progress === 'boolean') {
//             options.progress && $.messager.progress({
//                 msg: '处理中...'
//             });
//         } else {
//             $.messager.progress(options.progress);
//         }
//
//         var oAjax = $.ajax(options).done(function(data, textStatus, jqXHR) {
//             var _result = true;
//             if (typeof options.messager === 'boolean') {
//                 _result = options.messager && _self.messager.call(data, data, false, options.skip) || true;
//             } else {
//                 _result = _self.messager.call(data, data, options.messager, options.skip);
//             }
//             options.filterCallback.call(data, data, _result);
//         });
//         // 处理 RAP使用 jsonp方法报错问题 2016-07-29 zsk
//         if(oAjax){
//             oAjax.fail(function(jqXHR, textStatus, errorThrown) {
//                 if(jqXHR.readyState === 0 && jqXHR.statusText === "error" && jqXHR.responseText === ""){ // 单点登录跨域 被跳转
//                     window.location.reload();
//                 };
//             }).always(function(data, textStatus) {
//                 options.progress && $.messager.progress('close');
//             });
//         }
//         return oAjax;
//     };
//
//     return Utils;
// }));